package com.iswust.mianzhoutong.sign.mapper;

import com.iswust.mianzhoutong.sign.model.SignDetail;
import com.iswust.mianzhoutong.sign.model.dto.SignDaysDetailDto;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * @author liushuai
 * @create 2022-07-14 16:49
 */

@Repository
@Mapper
public interface SignDetailMapper {

    /**
     * 查询用户某月的签到情况
     *
     * @param userId 用户唯一标识
     * @param yearMonth  今日日期
     * @return 返回签到的日期
     */
    List<SignDaysDetailDto> getSignDateInMonth(@Param("userId") Integer userId, @Param("yearMonth") String yearMonth);

    /**
     * 插入今日签到记录
     *
     * @param signDetail 新的签到实体类 详见{@link SignDetail}
     * @return 影响的行数
     */
    int insertSign(SignDetail signDetail);

    /**
     * 查询与今日相差天数范围内,过去签到的每一天与今日签到日期的相差天数
     * @param userId 用户id
     * @param interval 与今日相差天数的范围
     * @return 返回一个存放过去每一天与与今日相差天数的集合
     */
    List<Integer> queryDiffCmpToday(@Param("userId") Integer userId,@Param("interval") Integer interval);


    /**查询用户某日是否签到
     * @param userId 用户id
     * @param date 用户日期
     * @return: 1--签到,0--未签到
     */
    int queryUserIsSign(@Param("userId") Integer userId, @Param("date") Date date);

    /**更新签到明细表的奖励类型
     * @param signDetail 每日签到记录对象,详见{@link SignDetail}
     * @return 影响的行数
     */
    int updateRewardType(SignDetail signDetail);

}
